////引用：一块内存的别名（外号）
//#include <iostream>
//
//using namespace std;
//
//int main(void) {
//    int a = 10;
//    int &b = a;//这并不是利用a的数据给b赋值，而应该理解为引用b是a所代表的内存的别名
//    b = 20;//对引用赋值，其实就是在对引用的目标内存(a)赋值
//    cout << "a = " << a << ",b=" << b << endl; //读取引用b的值，其实取的是引用b的目标内存（a）的值
//    cout << "&a:" << &a << ",&b:" << &b << endl;//取引用b的地址.其实取的是引用b的目标内存（a）的地址
////    int &c; 必须初始化
//    int c = 30;
//    b = c; //这里并不是引用的目标内存变为c,而理解为利用c的数据给引用b的目标内存（a）赋值
//    cout << "a=" << a << ",b=" << b << ",c=" << c << endl;
//    cout << "&a:" << &a << ",&b" << &b << ",&c:" << endl;
//    int &d = b;//这并不是引用的引用,而应该理解为d是b的目标内存的引用，也就是说，d是a的引用
//    cout << "&a:" << &a << ",&b" << &b << ",&d:" << &d << endl;
//    const int e = 10;
////    int &f = e;//error 别名不可以比真名限定的更加宽松
//    const int &g = e;//ok
//    const int &h = a;//ok,别名比真名限定的更加严格
//
//    return 0;
//}